package pe.tnova.cliente.proyecto.controller.mantenimiento;

import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import pe.tnova.cliente.proyecto.core.dominio.Asiento;
import pe.tnova.cliente.proyecto.core.dominio.Estadio;
import pe.tnova.cliente.proyecto.core.servicemnt.MantenimientoAsientoService;
import pe.tnova.core.controller.CrudController;
import pe.tnova.library.util.CharPoolUtil;
import pe.tnova.library.util.Exception.ServiceException;

@Controller
@RequestMapping("/MantenimientoAsiento")
public class MantenimientoAsientoController extends CrudController {

	private static final Logger logger = LoggerFactory.getLogger(MantenimientoAsientoController.class);
	
	@Autowired
	private MantenimientoAsientoService mantenimientoAsientoService;

	@RequestMapping(method = RequestMethod.GET)
	public String init(Model model, HttpServletRequest req) {
		try {
			List<Estadio> listaEstadios =  mantenimientoAsientoService.getEstadioCBO();
			model.addAttribute("listaEstadios", listaEstadios);
		} catch (ServiceException e) {			
			logger.error("Error al obtener la lista de objetos",e);
		}
		return MANTENIMIENTO + "asiento";
	}

	@RequestMapping(value="buscar",method = RequestMethod.GET)
	public @ResponseBody List<Asiento> buscar(Asiento filtro,Date finit, Date ffin,int inicio,int fin,String strSort,String strOrder,Model model, HttpServletRequest req) {
		try {			
			List<Asiento> listaAsiento = mantenimientoAsientoService.getListaAsiento(filtro, finit, ffin, inicio, fin, strSort, strOrder);
			return listaAsiento;
		} catch (ServiceException e) {			
			logger.error("Error al obtener la lista de objetos",e);
			return null;
		}
	}
	
	@RequestMapping(value="cambiarEstado",method = RequestMethod.GET)
	public @ResponseBody int cambiarActivo(Long id,Model model, HttpServletRequest req) {
		try {	
			mantenimientoAsientoService.cambiarActivo(id);
			return CharPoolUtil.NUMBER_1;
		} catch (ServiceException e) {			
			logger.error("Error al cambiar de Activo",e);
			return -CharPoolUtil.NUMBER_1;
		}	
	}
	
	@RequestMapping(value="obtener",method = RequestMethod.GET)
	public @ResponseBody Asiento obtener(Long id,Model model, HttpServletRequest req) {
		try {	
			Asiento asiento = mantenimientoAsientoService.obtener(id);
			return asiento;
		} catch (ServiceException e) {			
			logger.error("Error al obtener el objeto",e);
			return null;
		}		
	}
	
	@RequestMapping(value="duplicar",method = RequestMethod.GET)
	public @ResponseBody Asiento duplicar(Long id,Model model, HttpServletRequest req) {
		try {	
			Asiento asiento = mantenimientoAsientoService.obtener(id);
			asiento.setId(null);
			return asiento;
		} catch (ServiceException e) {			
			logger.error("Error al duplicar el objeto",e);
			return null;
		}		
	}
	
	@RequestMapping(value="guardar",method = RequestMethod.POST)
	public @ResponseBody Asiento guardar(Asiento asiento,Model model, HttpServletRequest req) {
		try {	
			mantenimientoAsientoService.guardar(asiento);
			return asiento;
		} catch (ServiceException e) {			
			logger.error("Error al guardar el objeto",e);
			return null;
		}		
	}
	

}
